﻿using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using DTO;

namespace DAO
{
    public class TuKhoaDichVuDAO : DataProvider
    {
        protected override object GetDataRowFromDataReader(OleDbDataReader dr)
        {
            TuKhoaDichVuDTO tuKhoaDichVuDTO = new TuKhoaDichVuDTO();
            if (!dr.IsDBNull(0))
            {
                tuKhoaDichVuDTO.MaTuKhoaDichVu = dr.GetInt32(0);
            }

            if (!dr.IsDBNull(1))
            {
                tuKhoaDichVuDTO.TuKhoaDichVu = dr.GetString(1);
            }

            if (!dr.IsDBNull(2))
            {
                tuKhoaDichVuDTO.MaDichVu = dr.GetInt32(2);
            }

            return (object)tuKhoaDichVuDTO;
        }

        public List<TuKhoaDichVuDTO> Search(string strInput)
        {
            List<TuKhoaDichVuDTO> lstTuKhoaDichVuDTO = new List<TuKhoaDichVuDTO>();
            try
            {
                strInput = strInput.Replace(@"'", @"''");
                //string strSQL = @"SELECT *" +
                //                @" FROM TUKHOADICHVU" +
                //                @" WHERE '" + strInput + @"' LIKE " + @"'*' + TuKhoaDichVu + '*'" ;
                //string strSQL = @"SELECT * FROM TUKHOADICHVU WHERE INSTR('" + strInput + @"', TuKhoaDichVu) > 0";
                string strSQL = String.Format(
                    "SELECT * FROM TUKHOADICHVU WHERE INSTR('{0}', TuKhoaDichVu) > 0",
                    strInput);

                using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                {
                    TuKhoaDichVuDTO tuKhoaDichVuDTO = null;
                    while (dr.Read())
                    {
                        tuKhoaDichVuDTO = (TuKhoaDichVuDTO)GetDataRowFromDataReader(dr);
                        lstTuKhoaDichVuDTO.Add(tuKhoaDichVuDTO);
                    }
                }

                if (FLAG)
                {
                    if (0 == lstTuKhoaDichVuDTO.Count)
                    {
                        strSQL = String.Format(
                            "SELECT * FROM TUKHOADICHVU WHERE INSTR(TuKhoaDichVu, '{0}') > 0",
                            strInput);

                        using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                        {
                            TuKhoaDichVuDTO tuKhoaDichVuDTO = null;
                            while (dr.Read())
                            {
                                tuKhoaDichVuDTO = (TuKhoaDichVuDTO)GetDataRowFromDataReader(dr);
                                lstTuKhoaDichVuDTO.Add(tuKhoaDichVuDTO);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                lstTuKhoaDichVuDTO = new List<TuKhoaDichVuDTO>();
            }

            return lstTuKhoaDichVuDTO;
        }
    }
}
